﻿using QuanLyChoVayCaNhan.Classes;
using QuanLyChoVayCaNhan.Models;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace QuanLyChoVayCaNhan.Forms
{
    public partial class AddTiepNhanHoSo : Form
    {
        private HoSo data = null;
        private TiepNhanHS dataTiepNhan = null;
        public AddTiepNhanHoSo()
        {
            InitializeComponent();
            data = new HoSo();
            dataTiepNhan = new TiepNhanHS();
            dataTiepNhan.NgayTiepNhan = DateTime.Today;
            this.Controls.Remove(panelThongTinKhachHang);
            this.Controls.Remove(panelThongTinHoSo);
        }

        private void AddTiepNhanHoSo_Load(object sender, EventArgs e)
        {
            this.khachHangBindingSource.DataSource = ModelManager.GetInstance().db.KhachHangs.ToList();
            this.hoSoBindingSource.DataSource = data;
            //data.TiepNhanHS.Add(dataTiepNhan);
            this.tiepNhanHSBindingSource.DataSource = this.dataTiepNhan;
            //this.tiepNhanHSBindingSource1.DataSource = dataTiepNhan;
        }

        private void btnHuyChonKH_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnTiepChonKH_Click(object sender, EventArgs e)
        {
            if (chonKhachHangData.SelectedCells.Count == 0)
            {
                MessageBox.Show("Bạn chưa chọn khách hàng nào");
                return;
            }
            int index = chonKhachHangData.SelectedCells[0].RowIndex;
            string maKH = chonKhachHangData.Rows[index].Cells[0].Value.ToString();
            KhachHang kh = data.KhachHang = ModelManager.GetInstance().db.KhachHangs.ToList().FirstOrDefault<KhachHang>((x) => x.MaKH == maKH);
            data.MaHS = "HS" + (ModelManager.GetInstance().db.HoSoes.Count() + 1);
            data.MaKH = kh.MaKH;
            data.TenKH = kh.TenKH;
            data.SoCMND = kh.SoCMND;
            data.NgayCap = kh.NgayCapCMND;
            data.NoiCap = kh.NoiCapCMND;
            data.DiaChi = kh.DiaChi;
            if (kh.DTDD != null && kh.DTDD.Length > 0) data.DienThoai = kh.DTDD;
            if (kh.DTNha != null && kh.DTNha.Length > 0) data.DienThoai = kh.DTNha;
            data.MaNVQHKH = UserManager.GetInstance().GetMaNhanVien();
            data.NhanVienQHKH = UserManager.GetInstance().GetNhanVien();
            this.Controls.Remove(panelChonKhachHang);
            this.Controls.Add(panelThongTinKhachHang);
        }


        private void chonKhachHangData_Click(object sender, EventArgs e)
        {

        }

        private void btnHuyThongTinHS_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Các thay đổi chưa được lưu", "Bạn có chắc chắn muốn hủy?", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.OK)
            {
                this.Close();
            }
        }

        private void btnTiepThongTinHS_Click(object sender, EventArgs e)
        {
            int so;
            if (soTextBox.Text == null || soTextBox.Text.Length == 0)
            {
                MessageBox.Show("Bạn chưa nhập số chứng từ tiếp nhận hồ sơ");
                return;
            }
            if (!int.TryParse(soTextBox.Text, out so))
            {
                MessageBox.Show("Số chứng phải là một số nguyên");
                return;
            }
            if (cacTLTrongHSTextBox.Text == null || cacTLTrongHSTextBox.Text.Length == 0)
            {
                MessageBox.Show("Bạn chưa nhập danh sách các tài liệu có trong hồ sơ");
                return;
            }
            if (!isDayDuCheckBox.Checked && (cacTLCanBSTextBox.Text == null || cacTLCanBSTextBox.Text.Length == 0))
            {
                MessageBox.Show("Bạn chưa nhập danh sách tài liệu cần bổ sung");
                return;
            }
            dataTiepNhan.Created = dataTiepNhan.Modified = data.Created = data.Modified = DateTime.Now;
            data.IsDayDu = isDayDuCheckBox.Checked;
            ModelManager.GetInstance().db.HoSoes.Add(data);
            ModelManager.GetInstance().db.SaveChanges();
            dataTiepNhan.So = so;
            dataTiepNhan.MaHS = data.MaHS;
            dataTiepNhan.HoSo = data;
            dataTiepNhan.CacTLTrongHS = cacTLTrongHSTextBox.Text;
            dataTiepNhan.CacTLCanBS = cacTLCanBSTextBox.Text;
            ModelManager.GetInstance().db.TiepNhanHS.Add(dataTiepNhan);
            ModelManager.GetInstance().db.SaveChanges();
            this.Close();
        }

        private void btnTiepThongTinKH_Click(object sender, EventArgs e)
        {
            if (tenKHTextBox.Text == null || tenKHTextBox.Text.Length == 0)
            {
                MessageBox.Show("Bạn chưa nhập tên khách hàng");
                return;
            }
            if (soCMNDTextBox.Text == null || soCMNDTextBox.Text.Length == 0)
            {
                MessageBox.Show("Bạn chưa nhập số CMND");
                return;
            }
            if (data.NgayCap.Year < 1900)
            {
                MessageBox.Show("Bạn chưa chọn ngày cấp CMND");
                return;
            }
            if (noiCapTextBox.Text == null || noiCapTextBox.Text.Length == 0)
            {
                MessageBox.Show("Bạn chưa nhập nơi cấp CMND");
                return;
            }
            if (diaChiTextBox.Text == null || diaChiTextBox.Text.Length == 0)
            {
                MessageBox.Show("Bạn chưa nhập địa chỉ");
                return;
            }
            if (dienThoaiTextBox.Text == null || dienThoaiTextBox.Text.Length == 0)
            {
                MessageBox.Show("Bạn chưa nhập số điện thoại");
                return;
            }
            this.Controls.Remove(panelThongTinKhachHang);
            this.Controls.Add(panelThongTinHoSo);
            int so;
            if (soTextBox.Text == null || soTextBox.Text.Length == 0 || !int.TryParse(soTextBox.Text.Trim(), out so) || dataTiepNhan.So == 0)
            {
                var temp = ModelManager.GetInstance().db.CreateSoTiepNhan().ToList().FirstOrDefault();
                if (temp == null) dataTiepNhan.So = 1;
                else dataTiepNhan.So = (((int)temp.Value)+1);
                soTextBox.Text = dataTiepNhan.So.ToString();
            }
        }

        private void btnHuyThongTinKH_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Các thay đổi chưa được lưu", "Bạn có chắc chắn muốn hủy?", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.OK)
            {
                this.Close();
            }
        }

        private void btnLuiThongTinHS_Click(object sender, EventArgs e)
        {
            this.Controls.Remove(panelThongTinHoSo);
            this.Controls.Add(panelThongTinKhachHang);
        }

        private void btnLuiThongTinKH_Click(object sender, EventArgs e)
        {
            this.Controls.Remove(panelThongTinKhachHang);
            this.Controls.Add(panelChonKhachHang);
        }

        private void checkBoxIsDayDu_CheckedChanged(object sender, EventArgs e)
        {
            if (isDayDuCheckBox.Checked)
            {
                cacTLCanBSTextBox.ReadOnly = true;
            }
            else
            {
                cacTLCanBSTextBox.ReadOnly = false;
            }
        }

        private void buttonThemKhachHangMoi_Click(object sender, EventArgs e)
        {
            //KhachHang kh = new KhachHang();
            data.MaHS = "HS" + (ModelManager.GetInstance().db.HoSoes.Count() + 1);
            //data.MaKH = kh.MaKH = "KH"+(ModelManager.GetInstance().db.KhachHangs.Count()+1);
            //data.TenKH = kh.TenKH;
            //data.SoCMND = kh.SoCMND;
            //data.NgayCap = kh.NgayCapCMND;
            //data.NoiCap = kh.NoiCapCMND;
            //data.DiaChi = kh.DiaChi;
            //data.DienThoai = "";
            data.MaNVQHKH = UserManager.GetInstance().GetMaNhanVien();
            data.NhanVienQHKH = UserManager.GetInstance().GetNhanVien();
            this.Controls.Remove(panelChonKhachHang);
            this.Controls.Add(panelThongTinKhachHang);
        }

        private void chonKhachHangData_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            btnTiepChonKH_Click(null, null);
        }

        private void buttonTimKhachHang_Click(object sender, EventArgs e)
        {

        }
    }
}
